package model

type AuthxApi struct {
	Id int `gorm:"primaryKey;autoIncrement;column:id"`
	// path:method
	Api string `gorm:"column:api;type:varchar(255)"`
}

type AuthxGroups struct {
	Id    int    `gorm:"primaryKey;autoIncrement;column:id"`
	Name  string `gorm:"column:name"`
	Group string `gorm:"column:group;type:varchar(255)"`
	Apis  string `gorm:"column:apis;type:varchar(255)"`
}

type AuthxRole struct {
	Id   int    `gorm:"primaryKey;autoIncrement;column:id"`
	Role string `gorm:"column:role;type:varchar(255)"`
}

type AuthxRoleApi struct {
	Id      int `gorm:"primaryKey;autoIncrement;column:id"`
	RoleId  int `gorm:"column:role_id"`
	GroupId int `gorm:"column:group_id"`
	ApiId   int `gorm:"column:api_id"`
}

type AuthxRoleGroup struct {
	Id      int `gorm:"primaryKey;autoIncrement;column:id"`
	RoleId  int `gorm:"column:role_id"`
	GroupId int `gorm:"column:group_id"`
}

type AuthxUserRole struct {
	Id     int `gorm:"primaryKey;autoIncrement;column:id"`
	RoleId int `gorm:"column:role_id"`
	UserId int `gorm:"column:user_id"`
}

// 统一实现TableName方法
func (AuthxApi) TableName() string       { return "authx_api" }
func (AuthxGroups) TableName() string    { return "authx_groups" }
func (AuthxRole) TableName() string      { return "authx_role" }
func (AuthxRoleApi) TableName() string   { return "authx_role_api" }
func (AuthxRoleGroup) TableName() string { return "authx_role_group" }
func (AuthxUserRole) TableName() string  { return "authx_user_role" }
